// MIR for `fun` after built

fn fun(_1: &[T]) -> &T {
    debug it => _1;                      // in scope 0 at $DIR/issue_91633.rs:+0:12: +0:14
    let mut _0: &T;                      // return place in scope 0 at $DIR/issue_91633.rs:+0:25: +0:27
    let _2: &T;                          // in scope 0 at $DIR/issue_91633.rs:+2:10: +2:11
    let _3: usize;                       // in scope 0 at $DIR/issue_91633.rs:+2:18: +2:19
    let mut _4: usize;                   // in scope 0 at $DIR/issue_91633.rs:+2:15: +2:20
    let mut _5: bool;                    // in scope 0 at $DIR/issue_91633.rs:+2:15: +2:20
    scope 1 {
        debug f => _2;                   // in scope 1 at $DIR/issue_91633.rs:+2:10: +2:11
    }

    bb0: {
        StorageLive(_2);                 // scope 0 at $DIR/issue_91633.rs:+2:10: +2:11
        StorageLive(_3);                 // scope 0 at $DIR/issue_91633.rs:+2:18: +2:19
        _3 = const 0_usize;              // scope 0 at $DIR/issue_91633.rs:+2:18: +2:19
        _4 = Len((*_1));                 // scope 0 at $DIR/issue_91633.rs:+2:15: +2:20
        _5 = Lt(_3, _4);                 // scope 0 at $DIR/issue_91633.rs:+2:15: +2:20
        assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb2]; // scope 0 at $DIR/issue_91633.rs:+2:15: +2:20
    }

    bb1: {
        _2 = &(*_1)[_3];                 // scope 0 at $DIR/issue_91633.rs:+2:14: +2:20
        FakeRead(ForLet(None), _2);      // scope 0 at $DIR/issue_91633.rs:+2:10: +2:11
        _0 = &(*_2);                     // scope 1 at $DIR/issue_91633.rs:+3:6: +3:7
        StorageDead(_3);                 // scope 0 at $DIR/issue_91633.rs:+4:2: +4:3
        StorageDead(_2);                 // scope 0 at $DIR/issue_91633.rs:+4:2: +4:3
        return;                          // scope 0 at $DIR/issue_91633.rs:+4:3: +4:3
    }

    bb2 (cleanup): {
        resume;                          // scope 0 at $DIR/issue_91633.rs:+0:1: +4:3
    }
}
